package com.yanfan.energy.service;

import com.yanfan.common.core.domain.AjaxResult;
import com.yanfan.energy.domain.DeviceThingsEnergy;
import com.yanfan.energy.domain.model.ComboBoxBody;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

import java.util.List;

/**
 * 设备开关机增量记录表 (DeviceThingsEnergy)表服务接口
 *
 * @author makejava
 * @since 2023-08-03 09:27:37
 */
public interface DeviceThingsEnergyService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    DeviceThingsEnergy queryById(Integer id);

    /**
     * 分页查询
     *
     * @param deviceThingsEnergy 筛选条件
     * @param pageRequest        分页对象
     * @return 查询结果
     */
    Page<DeviceThingsEnergy> queryByPage(DeviceThingsEnergy deviceThingsEnergy, PageRequest pageRequest);

    /**
     * 新增数据
     *
     * @param deviceThingsEnergy 实例对象
     * @return 实例对象
     */
    DeviceThingsEnergy insert(DeviceThingsEnergy deviceThingsEnergy);

    /**
     * 修改数据
     *
     * @param deviceThingsEnergy 实例对象
     * @return 实例对象
     */
    DeviceThingsEnergy update(DeviceThingsEnergy deviceThingsEnergy);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    /**
     * 查询设备参数绑定能源类型数据
     *
     * @param type
     * @param id         车间id
     * @param deviceName 设备名称
     * @param pageNum    当前页
     * @param pageSize   当前页条数
     * @return java.util.List<com.yanfan.zhongji.domain.DeviceThingsEnergy>
     * @author caijinkang
     * @date 2023/8/4 11:24
     */
    AjaxResult findBindDeviceEnergy(Integer type, Integer id, String deviceName, Integer pageNum, Integer pageSize);

    /**
     * 添加设备绑定能源
     *
     * @param deviceThingsEnergy
     * @return com.yanfan.common.core.domain.AjaxResult
     * @author caijinkang
     * @date 2023/8/11 9:54
     */
    AjaxResult addBindDeviceEnergy(DeviceThingsEnergy deviceThingsEnergy);

    /**
     * 修改设备绑定能源
     *
     * @param deviceThingsEnergy
     * @return com.yanfan.zhongji.domain.DeviceThingsEnergy
     * @author caijinkang
     * @date 2023/8/7 15:05
     */
    AjaxResult updateBindDeviceEnergy(DeviceThingsEnergy deviceThingsEnergy);

    /**
     * 删除设备绑定能源
     *
     * @param workshopId
     * @param type
     * @param id
     * @param thingsId
     * @return com.yanfan.common.core.domain.AjaxResult
     * @author caijinkang
     * @date 2023/8/11 11:13
     */
    AjaxResult deleteBindDeviceEnergy(Integer workshopId, Integer type, Integer id, Integer thingsId);

    /**
     * 根据设备id查询物模型下拉框
     *
     * @param deviceId
     * @param name
     * @return com.yanfan.common.core.domain.AjaxResult
     * @author caijinkang
     * @date 2023/8/14 17:25
     */
    List<ComboBoxBody> findIotThingsByDeviceId(Integer deviceId, String name);

}
